前陣子開玩笑跟朋友提到 lagacy code's gonna live forever
想想好像有點適合聽 Bon Jovi 的 It's My Life 齁 XD
昨天提到 Spring Framework 的核心概念,今天來講講 Spring 框架中的設計模式:Spring MVC。
MVC 的設計模式可以追溯到 1970s,在此之前多數的應用程式都是「緊 (ㄋㄧˇ) 密 (ㄋㄨㄥˊ) 耦 (ㄨㄛˇ) 合 (ㄋㄨㄥˊ)」的架構。
這種單一模組缺乏明確的組織結構,意味著系統中的不同功能(例如資料存取層、業務邏輯層和使用者介面)彼此耦合,容易導致不一致性。另外,這種耦合的程式碼也會讓自動化測試變得相當困難。
由於 MVC 架構能把 業務邏輯
、使用者界面
和 使用者輸入
清楚地分開,如此可以讓軟體開發朝向模組化發展,所以逐漸受到開發者喜愛,並在各種平台和語言中被採用。
想像一下在餐廳點餐時:
Model 實例
。服務生將食物送到我的桌前
,這也是 View 的一部分。輸入
(選擇的餐點),並將該這個 輸入
傳達到廚房 Model
。廚房根據輸入製作相對應的食物,然後服務生最後再將烹調好的食物(更新後的 View
)送來給我。從這個例子可以簡單理解 MVC 中三個元件間的交互協作:Controller
接受 input,Model
處理 logic,而 View
呈現 result。透過這種分離讓應用程式各個部分能獨立開發和修改,不互相干擾。
接下來可以進一步討論 Spring MVC 了
DispatcherServlet
的前端 controller,該 controller 負責將 request 轉發到正確的 controller 和 view。在一般的 MVC 裡比較沒有這種統一的前端 controller 概念ModelAndView
和 ViewResolver
Spring MVC 將過去屬於 Servlet 拆分為不同元件,透過 Spring MVC 提供的框架可以避免將不同層混寫在一起